/* p10_1: Relay control */
/* This program turns the relay connect to PB0 on and off every second. */

#include "TM4C123GH6PM.h"

void delayMs(int n);

int main(void)
{
    SYSCTL->RCGCGPIO |= 0x02;   /* enable clock to GPIOB  */
    
    /* PORTB 0 for relay control */
    GPIOB->DIR |= 0x01;         /* PORTB 0 as output */
    GPIOB->DEN |= 0x01;         /* PORTB 0 as digital pins */
    
    for (;;)
    {
        GPIOB->DATA ^= 1;       /* toggle PB0 at 1 Hz */
        delayMs(500);
    }
}

/* delay n milliseconds (16 MHz CPU clock) */
void delayMs(int n)
{
    int i, j;
    for(i = 0 ; i < n; i++)
        for(j = 0; j < 3180; j++)
            {} /* do nothing for 1 ms */
}

/* This function is called by the startup assembly */
/* code to perform system specific initialization tasks. */
void SystemInit(void)
{
    /* Grant coprocessor access */
    /* This is required since TM4C123G has a floating point coprocessor */
    SCB->CPACR |= 0x00f00000;
}